﻿package com.amcharts.geom
{
    import com.amcharts.utils.*;
    import flash.display.*;
    import flash.geom.*;
    import mx.utils.*;

    public class Wedge extends ExtendedSprite
    {
        private var _shadowBrightness:Number = -20;
        private var _ix:Number;
        private var _iy:Number;
        static const VERSION:String = "1.8.3.1";

        public function Wedge(param1:Number, param2:Number, param3:Number, param4:Number, param5:Number, param6:Number = 0, param7:Number = 1, param8:Number = 1, param9:Number = 1, param10:Number = 0, param11:Number = 0, param12:String = "linear" , param13:Array = null)
        {
            var _loc_24:Matrix = null;
            var _loc_25:Array = null;
            var _loc_26:Array = null;
            var _loc_27:Array = null;
            var _loc_28:uint = 0;
            var _loc_29:Number = NaN;
            var _loc_30:Number = NaN;
            var _loc_31:Sprite = null;
            var _loc_32:Sprite = null;
            var _loc_33:Sprite = null;
            var _loc_14:* = param5 / param4 * param6;
            if (Math.abs(param2) > 360)
            {
                param2 = 360;
            }
            var _loc_15:* = new Sprite();
            addChild(_loc_15);
            _loc_15.graphics.lineStyle(param10, param8, param9);
            if (param12 != "radial")
            {
            }
            if (param12 == "linear")
            {
                _loc_24 = new Matrix();
                _loc_24.createGradientBox(param4 * 2, param5 * 2, 0, -param4, -param5);
                _loc_25 = new Array();
                _loc_26 = new Array();
                _loc_27 = new Array();
                _loc_28 = 0;
                while (_loc_28 < param13.length)
                {
                    
                    _loc_25[_loc_28] = ColorUtil.adjustBrightness(param3, param13[_loc_28]);
                    _loc_26[_loc_28] = 1;
                    _loc_27[_loc_28] = 255 / (param13.length - 1) * _loc_28;
                    _loc_28 = _loc_28 + 1;
                }
                _loc_15.graphics.beginGradientFill(param12, _loc_25, _loc_26, _loc_27, _loc_24);
            }
            else
            {
                _loc_15.graphics.beginFill(param3, param7);
            }
            var _loc_16:* = Math.cos(param1 / 180 * Math.PI) * param6;
            var _loc_17:* = Math.sin((-param1) / 180 * Math.PI) * _loc_14;
            var _loc_18:* = Math.cos(param1 / 180 * Math.PI) * param4;
            var _loc_19:* = Math.sin((-param1) / 180 * Math.PI) * param5;
            var _loc_20:* = Math.cos((param1 + param2) / 180 * Math.PI) * param4;
            var _loc_21:* = Math.sin((-param1 - param2) / 180 * Math.PI) * param5;
            var _loc_22:* = Math.cos((param1 + param2) / 180 * Math.PI) * param6;
            var _loc_23:* = Math.sin((-param1 - param2) / 180 * Math.PI) * _loc_14;
            _loc_15.graphics.moveTo(_loc_16, _loc_17);
            _loc_15.graphics.lineTo(_loc_18, _loc_19);
            drawArc(_loc_15, param2, param1, param4, param5, 0, 0);
            _loc_15.graphics.lineTo(_loc_22, _loc_23);
            if (param6 > 0)
            {
                drawArc(_loc_15, -param2, param1 + param2, param6, _loc_14, 0, 0);
            }
            _ix = Math.cos((param1 + param2 / 2) / 180 * Math.PI);
            _iy = Math.sin((-param1 - param2 / 2) / 180 * Math.PI) * (param5 / param4);
            if (param11 > 0)
            {
                param3 = ColorUtil.adjustBrightness(param3, _shadowBrightness);
                _loc_29 = 1;
                _loc_30 = Math.ceil(param11 / _loc_29);
                _loc_31 = new Sprite();
                addChildAt(_loc_31, 0);
                _loc_32 = new Sprite();
                addChildAt(_loc_32, 1);
                _loc_28 = 0;
                while (_loc_28 < _loc_30)
                {
                    
                    _loc_33 = new Sprite();
                    _loc_31.addChild(_loc_33);
                    _loc_33.graphics.beginFill(param3, param7);
                    _loc_33.graphics.moveTo(_loc_16, _loc_17 + _loc_29 * _loc_28);
                    drawArc(_loc_33, param2, param1, param6, _loc_14, 0, _loc_29 * _loc_28);
                    _loc_33.graphics.lineTo(_loc_22, _loc_23 + _loc_29 * (_loc_28 + 1));
                    drawArc(_loc_33, -param2, param1 + param2, param6, _loc_14, 0, _loc_29 * (_loc_28 + 1));
                    _loc_33.graphics.lineTo(_loc_16, _loc_17 + _loc_29 * _loc_28);
                    _loc_33 = new Sprite();
                    _loc_32.addChild(_loc_33);
                    _loc_33.graphics.beginFill(param3, param7);
                    _loc_33.graphics.moveTo(_loc_18, _loc_19 + _loc_29 * _loc_28);
                    drawArc(_loc_33, param2, param1, param4, param5, 0, _loc_29 * _loc_28);
                    _loc_33.graphics.lineTo(_loc_20, _loc_21 + _loc_29 * (_loc_28 + 1));
                    drawArc(_loc_33, -param2, param1 + param2, param4, param5, 0, _loc_29 * (_loc_28 + 1));
                    _loc_33.graphics.lineTo(_loc_18, _loc_19 + _loc_29 * _loc_28);
                    _loc_28 = _loc_28 + 1;
                }
                _loc_33 = new Polygon([_loc_16, _loc_16, _loc_18, _loc_18, _loc_16], [_loc_17, _loc_17 + param11, _loc_19 + param11, _loc_19, _loc_17], [param3], [param7]);
                addChildAt(_loc_33, 2);
                _loc_33 = new Polygon([_loc_20, _loc_20, _loc_22, _loc_22, _loc_20], [_loc_21, _loc_21 + param11, _loc_23 + param11, _loc_23, _loc_21], [param3], [param7]);
                addChildAt(_loc_33, 3);
            }
            return;
        }// end function

        public function get ix() : Number
        {
            return _ix;
        }// end function

        public function get iy() : Number
        {
            return _iy;
        }// end function

        private function drawArc(param1:Sprite, param2:Number, param3:Number, param4:Number, param5:Number, param6:Number, param7:Number) : void
        {
            var _loc_13:Number = NaN;
            var _loc_14:Number = NaN;
            var _loc_15:Number = NaN;
            var _loc_16:Number = NaN;
            var _loc_17:Number = NaN;
            var _loc_8:* = Math.ceil(Math.abs(param2) / 45);
            var _loc_9:* = param2 / _loc_8;
            var _loc_10:* = (-_loc_9 / 180) * Math.PI;
            var _loc_11:* = (-param3 / 180) * Math.PI;
            var _loc_12:Number = 0;
            while (_loc_12 < _loc_8)
            {
                
                _loc_11 = _loc_11 + _loc_10;
                _loc_13 = _loc_11 - _loc_10 / 2;
                _loc_14 = Math.cos(_loc_11) * param4 + param6;
                _loc_15 = Math.sin(_loc_11) * param5 + param7;
                _loc_16 = Math.cos(_loc_13) * (param4 / Math.cos(_loc_10 / 2)) + param6;
                _loc_17 = Math.sin(_loc_13) * (param5 / Math.cos(_loc_10 / 2)) + param7;
                param1.graphics.curveTo(_loc_16, _loc_17, _loc_14, _loc_15);
                _loc_12 = _loc_12 + 1;
            }
            return;
        }// end function

    }
}
